package com.zhen.aikan.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhen.aikan.entity.Scheduled;
import org.quartz.SchedulerException;

/**
 * @author LiJiaZhen
 * @date 2023/9/18 18:25
 */
public interface IScheduledService extends IService<Scheduled> {
    /**
     * 暂停任务
     *
     * @param job 调度信息
     */
    public int pauseJob(Scheduled job) throws SchedulerException;

    /**
     * 恢复任务
     *
     * @param job 调度信息
     */
    public int resumeJob(Scheduled job) throws SchedulerException;

    /**
     * 删除任务后，所对应的trigger也将被删除
     *
     * @param job 调度信息
     */
    public int deleteJob(Scheduled job) throws SchedulerException;

    /**
     * 任务调度状态修改
     */
    public int changeStatus(Scheduled job) throws SchedulerException;

    /**
     * 立即运行任务
     *
     * @param job 调度信息
     */
    public void run(Scheduled job) throws SchedulerException;

    /**
     * 新增任务
     *
     * @param job 调度信息
     */
    public int insertJob(Scheduled job) throws Exception;

    /**
     * 更新任务
     *
     * @param job 调度信息
     */
    public int updateJob(Scheduled job) throws SchedulerException, Exception;

    /**
     * 校验cron表达式是否有效
     *
     * @param cronExpression 表达式
     */
    public boolean checkCronExpressionIsValid(String cronExpression);
}
